package cn.openea.perpartner.mpwx.core;
import me.chanjar.weixin.cp.api.WxCpInMemoryConfigStorage;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.api.WxCpServiceImpl;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.WxMpServiceImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author Weird077
 * @description TODO
 * @date 2022-06-23 10:36
 */
@Component
public class WxServiceTemplate {
    @Value("${weixin.sCorpID}")
    private String sCorpID;
    @Value("${weixin.corpsecret}")
    private String corpsecret;
    @Value("${weixin.appID}")
    private String appID;
    @Value("${weixin.sToken}")
    private String sToken;
    @Value("${weixin.sEncodingAESKey}")
    private String sEncodingAESKey;

    private  WxCpService wxCpService;

    private  WxMpService wxMpService;

    /**
     * 用于反回企业微信相关的验证信息的
     * @return
     */
    public WxCpService getWxCpService() {
        if(wxCpService == null) {
            WxCpInMemoryConfigStorage config = new WxCpInMemoryConfigStorage();
            // 设置微信企业号的appid
            config.setCorpId(sCorpID);
            // 设置微信企业号的app corpSecret
            config.setCorpSecret(corpsecret);
            // 设置微信企业号应用ID
            config.setAgentId(appID);
            // 设置微信企业号应用的token
            config.setToken(sToken);
            // 设置微信企业号应用的EncodingAESKey
            config.setAesKey(sEncodingAESKey);
            // 这里实现的是企业微信的接口
            wxCpService = new WxCpServiceImpl();
            wxCpService.setWxCpConfigStorage(config);
        }
        return wxCpService;
    }

    /**
     * 用于反回微信公众号相关的验证信息的
     * @return
     */
    public WxMpService getWxMpService() {
        if(wxMpService == null) {
            WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();
            // 设置微信公众号的开发者ID(AppID)
            config.setAppId(appID);
            // 设置微信公众号的开发者密码(AppSecret)
            config.setSecret(corpsecret);
            // 设置微信公众号的令牌(Token)
            config.setToken(sToken);
            // 设置微信公众号的消息加解密密钥(EncodingAESKey)
            config.setAesKey(sEncodingAESKey);
            // 这里实现的是微信公众号的接口
            wxMpService = new WxMpServiceImpl();
            wxMpService.setWxMpConfigStorage(config);
        }
        return wxMpService;
    }

}
